<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
    fuctionname.call(想要将this指向哪里, 函数实参1, 函数实参2);
    call() 方法的作用：可以调用一个函数，与此同时，它还可以改变这个函数内部的 this 指向。
    call() 方法的另一个应用：可以实现继承。之所以能实现继承，其实是利用了上面的作用。
*/
        const obj1 = {
            name: 'obj1',
            age: 29
        }

        function Show() {
            console.log('this is', this);
            console.log(this.name);
            console.log(this.age);
        }
        name = 'windowname'
        age = '200'
        // 传入null 就没有改编原来的this指向 相当于执行了函数
        Show.call(null);
        // 改变this指向
        Show.call(obj1);



        // 通过call实现继承
        // father类的构造函数
        function father(name, age) {
            this.name = name;
            this.age = age;
        }

        function son(name, age,address) {
            // 调用父类的构造方法，改变this指向为son，来实现继承
            father.call(this, name, age);
            this.address = address
        }
        console.log('son is ', new son('lin', 33,'shenzhen'));
    </script>
</body>

</html>